str_replace 对于多个项目,然后将结果存储在新变量中
str_replace for multiple items then store results in new variable
我有这样的字符串:
$content = 'Hi @steve, have you seen what @dave wrote?';
我基本上只想定位直接跟在 @ 符号后面的词(比如 Twitter 提及),然后遍历每个结果执行与它们一起执行的任务。
我知道如何从整个字符串中去除 @ 字符:
$strip_at = str_replace( '@', '', $content );
这将导致 $strip_at 为:
Hi steve, have you seen what dave wrote?
但是我如何使用 str_replace 定位每个 "mention",删除只留下单词(在本例中为名称)的 @ 符号,然后存储每个 [=30] 的结果=] 数组中的新变量?
想要的结果:
$mentions = array('steve','dave');
所以我可以循环 $mentions 并对结果进行处理,例如:
foreach ($mentions as $mention) {
echo 'This persons name is '.$mention.'<br />';
}
您可以通过正则表达式完成此操作:
preg_match_all('/(?<=@)(\w){1,15}/', $content, $results);
这会将这个数组存储在变量中 $results
:
[
[
"steve",
"dave",
],
]
并且您可以通过遍历 $results[0]
:
来枚举匹配项
foreach($results[0] as $name) {
echo $name . '<br>';
}
打印:
steve
dave
如果您想知道 /(?<=@)(\w){1,15}/
是什么意思:
(?<=@)
- "lookbehind" - 这意味着 我们需要一个 @
来匹配我们实际感兴趣的内容
(\w){1,15}
表示匹配最大长度为15(推特名称的最大长度)的单词
所以我们一起匹配 @ 符号后的 Twitter 用户名。
我有这样的字符串:
$content = 'Hi @steve, have you seen what @dave wrote?';
我基本上只想定位直接跟在 @ 符号后面的词(比如 Twitter 提及),然后遍历每个结果执行与它们一起执行的任务。
我知道如何从整个字符串中去除 @ 字符:
$strip_at = str_replace( '@', '', $content );
这将导致 $strip_at 为:
Hi steve, have you seen what dave wrote?
但是我如何使用 str_replace 定位每个 "mention",删除只留下单词(在本例中为名称)的 @ 符号,然后存储每个 [=30] 的结果=] 数组中的新变量?
想要的结果:
$mentions = array('steve','dave');
所以我可以循环 $mentions 并对结果进行处理,例如:
foreach ($mentions as $mention) {
echo 'This persons name is '.$mention.'<br />';
}
您可以通过正则表达式完成此操作:
preg_match_all('/(?<=@)(\w){1,15}/', $content, $results);
这会将这个数组存储在变量中 $results
:
[
[
"steve",
"dave",
],
]
并且您可以通过遍历 $results[0]
:
foreach($results[0] as $name) {
echo $name . '<br>';
}
打印:
steve
dave
如果您想知道 /(?<=@)(\w){1,15}/
是什么意思:
(?<=@)
- "lookbehind" - 这意味着 我们需要一个 @
来匹配我们实际感兴趣的内容
(\w){1,15}
表示匹配最大长度为15(推特名称的最大长度)的单词
所以我们一起匹配 @ 符号后的 Twitter 用户名。