preg_replace に問題があります。リンク内の言及を変更しますが、名前はユーザー名ではありません。名前にスペースがあるので、良い解決策を見つけましたが、それを行う方法がわかりません。preg_replace
との間にある単語@
を,
例えば:
@John Doeh, @Jenna Diamond, @Sir Duck Norman
そしてに置き換えます
<a href="user.php?name=VAL">VAL</a>
どうすればいいのですか?
preg_replace に問題があります。リンク内の言及を変更しますが、名前はユーザー名ではありません。名前にスペースがあるので、良い解決策を見つけましたが、それを行う方法がわかりません。preg_replace
との間にある単語@
を,
例えば:
@John Doeh, @Jenna Diamond, @Sir Duck Norman
そしてに置き換えます
<a href="user.php?name=VAL">VAL</a>
どうすればいいのですか?
@Some Name,
私の仮定に基づいて、次のようなテキストで始まる文字列を削除したいと考えています@Some Name, this is a message
。
href
次に、それを次のように置き換えます。<a href="user.php?name=First_Name">First_Name</a>
その場合、次の正規表現が機能します。
$str = '@First_Name, say something';
echo preg_replace ( '/@([[:alnum:]\-_ ]+),.*/', '<a href="user.php?name=$1">$1</a>', $str );
出力します:
<a href="user.php?name=First_Name">First_Name</a>
数字、アンダースコア、ダッシュのサポートも追加しました。それらは名前でも有効ですか?@User Name
?で有効なその他の文字。それらは知っておくべき重要なことです。
私はあなたがそれを次のようにしたいと思います:
<a href="user.php?name=John Doeh">John Doeh</a>
この試みのために:
$myString="@John Doeh, @Jenna Diamond, @Sir Duck Norman";
foreach(explode(',',$myString) as $str)
{
if (preg_match("/\\s/", $str)) {
$val=str_replace("@","",trim($str));
echo "<a href='user.php?name=".$val."'>".$val."</a>";
// there are spaces
}
}
2 つの方法:
<?php
// preg_replace method
$string = '@John Doeh, @Jenna Diamond, @Sir Duck Norman';
$result = preg_replace('/@([\w\s]+),?/', '<a href="user.php?name=$1">$1</a>', $string);
echo $result . "<br>\n";
// explode method
$arr = explode(',', $string);
$result2 = '';
foreach($arr as $name){
$name = trim($name, '@ ');
$result2 .= '<a href="user.php?name='.$name.'">'.$name.'</a> ';
}
echo $result2;
?>