Replace a string starting with a character [closed] - php

Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 1 year ago.
Improve this question
I would like to replace a user input with my own string, with the user's inputted message only having a known start character.
The user enters their input "#userinput" which will then change to
userinput
Any help would be greatly appreciated, my attempts can be seen below.
My attempts.
Code:
preg_match('#(?>\#)(\w*)#', $string, $matches);
foreach($matches as $row){
$string = preg_replace('#(?>\#)(\w*)#', ' '. $row . "", $string);
}
OTHER ATTEMPT
$string = preg_replace('#\#(.*)#', '<b><a href="=$1"=> #$1 </a></b>', $string);

You probably want to exclude space and #:
$string = preg_replace('##([^\s#]+)#', '<b> #$1 </b>', $string);

Try this
$atPosition = stripos($string, '#');
$substr = '';
if (stripos($string, '#') !== false) {
$substr = substr($string, $atPosition + 1);
$content = '<b> '.$substr.' </b>';
}
echo $content;

Related

How to exchange numbers in string? [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 3 years ago.
Improve this question
can you please help me with finding right function for exchanging numbers in string? Numbers are separated with ":".
For example
"2:0" to "0:2"
"101:50" to "50:101"
Thank you.
There are many ways to do it, you can try the any of the ways here.
<?php
//using regex
$re = '/(\d+):(\d+)/i';
$str = '50:101';
$subst = '$2:$1';
$result = preg_replace($re, $subst, $str);
echo "The string $str after exchange is ".$result;
echo PHP_EOL;
// concatenating parts after explode
$parts = explode(':',$str);
echo "The string $str after exchange is $parts[1]:$parts[0]";
echo PHP_EOL;
//using explode, array_reverse and implode
$str = '50:101';
$result = implode(':', array_reverse(explode(':',$str)));
echo "The string $str after exchange is ".$result;
?>
DEMO: https://3v4l.org/OkY18
Simply explode() the string and then reform it.
$str = '100:200';
$bits = explode(':',$str);
echo $bits[1] . ':' . $bits[0];
RESULT
200:100

Extract texts on strings PHP [closed]

Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 6 years ago.
Improve this question
Hey i wanna know how i can extract this data and do a echo
Example of echo:
Item: D608
Time: 17011511
Same with the another line after ,
$strings = "D608-1-1-17011511-0,D832-1-1-17011511-0";
Thanks you!
If -1-1- and -0 will be always same then you can do it via str_replace
Working example
$strings = "D608-1-1-17011511-0,D832-1-1-17011511-0";
$strings = explode(',', $strings);
foreach ($strings as $item)
{
$item = str_replace( array('-1-1-', '-0'), array('-', ''), $item);
$item = explode('-', $item);
echo "Item: <b>".$item[0]."</b> ";
echo "Time: <b>".$item[1]."</b><br>";
}
Output:
Item: D608 Time: 17011511
Item: D832 Time: 17011511
If you know the length/content of the string, you can use explode().
$strings = "D608-1-1-17011511-0,D832-1-1-17011511-0";
$exploded_string = explode(',',$string);
foreach ($exploded_string as $string) {
echo explode('-',$string)[0].' '.explode('-',$string)[3];
}

PHP RegEx for the following string [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 8 years ago.
Improve this question
I have this string.
130003 lebtro is cool 609664 trochanter2 460936 bibi95 410635 MrRadical38 206311 Labonte 577767 thebanzaikid 569248 marco 355894 Armored_J 630259 SNEG323 569014 llama 501235 plummer 305212 lonefish 294268 dragonbleed 399281 Stelomat 619909 McPred 22733 Storykeeper 634691 The Max 504980 MrFrench 248285 Darkshadow2013 647361 Cain
And I want to be able to parse so the numbers followed by the letters like this:
130003 lebtro is cool<br>
609664 trochanter2<br>
460936 bibi95<br>
410635 MrRadical38<br>
206311 Labonte<br>
...<br>
...<br>
...<br>
647361 Cain
Would I need to use a RegEx in PHP or is there any other way to do it?
Here's a regex solution:
\b(\d+)\s+(.+?(?=\s+\d|$))
Demo
You can use this with preg_match_all. Each match will contain the number in the first group and the value in the second group.
Something like this should do the job:
preg_match_all('#\b(\d+)\s+(.+?(?=\s+\d|$))#', $input, $matches, PREG_SET_ORDER);
// $matches[0][1] == "130003"
// $matches[0][2] == "lebtro is cool"
// $matches[1][1] == "609664"
// $matches[2][2] == "trochanter2"
With this solution, any whitespace-separated number is considered as an entry start. If all your numbers are 6 digits, then replace \d+ with \d{6} (or \d{6,} for at least 6 digits).
with preg_split:
$result = preg_split('~\s*\b(?=[0-9])~', $str, -1, PREG_SPLIT_NO_EMPTY);
or more waterproof:
$result = preg_split('~(?:\s|\A)\s*(?=[0-9])~', $str, -1, PREG_SPLIT_NO_EMPTY);
or a why not pattern:
$result = preg_split('~(?:\s+|\A\s*)(*SKIP)(?=[0-9])~', $str, -1, PREG_SPLIT_NO_EMPTY);
Without regex:
$elts = explode(' ', $str);
$result = array();
$tmp = '';
foreach ($elts as $elt) {
if (ctype_digit($elt)) {
if ($tmp) $result[] = $tmp;
$tmp = $elt;
} else
$tmp .= ' ' . $elt;
}
$result[] = $tmp;

How to Delete Last Word of variable in php [closed]

Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 7 years ago.
Improve this question
How to last word from our Variable for example
$name = "Salman Khan";
And I want ans in only because i want tp remove n in my string
$words = explode(' ',$name); // Break words into array
$noofwords = count($words); // Find out how many
unset($words[$noofwords-1]); // remove the last one (-1 because of zero-index)
$newstring = implode(' ',$words); //put back together
$newstring = substr($name, 0, strlen($name)-1);
Do you mean remove the last letter?
echo substr($name, 0, -1);
Or the last word?
echo explode(' ', $name)[0];
echo rtrim($name,"n");
OR
echo substr($name,0,-1);
OR
echo substr($name,0,strlen($name)-1);
Output
salman kha
Try out this one.
$name = 'salman khan';
$length = strlen($name);
$char = $name[$length-1];
echo rtrim($name,$char);

Using PHP how do I test a string for a pattern then alter it? [closed]

Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 8 years ago.
Improve this question
In PHP given this string:
$string = '/sometext?123#abc/moretext';
How can I test for the existence of the pattern "?123#abc/" which will always be enclosed by "?" and "/" but have varying inner-text that may include any text and symbols? The text outside of the pattern will also be different. I need to do this:
if ($string includes pattern ?*/) {
//load the inner value into a variable
//then remove the entire patern including the leading "?" and trailing "/" and replace with a single "/"
}
How do I do this?
<?php
$string = '/sometext?123#abc/moretext';
$pattern = '/\\?(.*?)\\//';
if( $pieces = preg_split($pattern, $string, Null, PREG_SPLIT_DELIM_CAPTURE)) {
echo($pieces[1] . "\n");
unset($pieces[1]);
echo(implode("/", $pieces) . "\n");
}
?>
--output:--
~/php_programs$ php 1.php
123#abc
/sometext/moretext
Try this
$s = '/sometext?123#abc/moretext';
$matches = array();
$t = preg_match('#\?(.*?)\/#s', $s, $matches);
if($matches[1])
echo "match";
else
echo "not";
Output
match
Codepad

Categories