我想创建一个如下所示的PHP数组,其中包含两个值,一个用于匹配的单词,另一个用于检查匹配是否为链接。
输入
Array
(
[0] =>
Array
(
[0] test
[1] false
)
[1] =>
Array
(
[0] test
[1] true
)
)
我可以在这里找到“测试”一词的所有匹配项,并检查创建的匹配项是否为链接?
输出
class ContentController extends MasterController {
public function content() {
$content = content::all()->paginate(10);
$content->setPath('content'); //Customise Page Url
return view('content.boot',compact('content'));
}
}
答案 0 :(得分:1)
您可以使用正则表达式:
$string = 'test <a href="http://test" title="mytitle">link text</a>';
if (preg_match("#^\s*(.*?)\s*<a\s.*?href\s*=\s*['\"](.*?)['\"].*?>(.*?)</a\s*>#si",
$string, $match)) {
$textBefore = $match[1]; // test
$href = $match[2]; // http://test
$anchorText = $match[3]; // link text
// deal with these elements as you wish...
}
此解决方案不区分大小写,它也适用于<A ...>...</A>
。如果 href 值用单引号而不是双引号分隔,则它仍然有效。忽略(修剪)每个值的周围空格。
答案 1 :(得分:0)
试试这段代码:
<?php
$string ="test <a href=\"test\" title=\"test\">test</a>";
$link ='';
$word = '';
$flag = true;
for($i=0;$i<strlen($string);$i++){
if($string[$i] == '<' && $string[$i+1] == 'a'){
$flag=false;
while($string[$i++] != '>')
{
}
while($string[$i] != '<' && $string[$i+1] != '/' && $string[$i+2] != 'a' && $string[$i+3] != '>'){
$link .= $string[$i++];
}
}
else{
if($flag)
$word.=$string[$i];
}
}
echo 'Link :'.$link . "<br/>";
echo 'Word:'.$word;
// You can now manipulate Link and word as you wish
?>