PHP 将 html 标记添加到第一个单词

PHP add html tag to first word

尝试在 WooCommerce 简短描述中的每个新行的第一个单词周围添加 HTML 标签,并验证该文件是否存在。如果存在,它将输出 link.

我试过这个:

$string = $short_description;
$keys = array('a1', 'a2', 'a3');
$patterns = array();
foreach($keys as $key)
    $patterns[] = '/\b('.$key.')\b/i';

echo preg_replace($patterns, '<a href="https://www.example.com/media/'.$product->get_sku().'/'.$product->get_sku().'[=12=].pdf">[=12=]</a>', $string);

$url = preg_replace($patterns,  'https://www.example.com/media/' .$product->get_sku(). '/' .$product->get_sku(). '[=12=].pdf', $string); 

$handle = @fopen($url,'r'); 
if($handle !== false){ ?>
<?php echo preg_replace($patterns, '<li><a href="https://www.example.com/media/'.$product->get_sku().'/'.$product->get_sku().'[=12=].pdf">[=12=]</a></li>', $string);?>
<?php } else {?>
<?php echo preg_replace($patterns, '<li>[=12=]</li>', $string);?>

这是我能得到的最接近的结果,限制是您需要添加所有需要更改的单词(总共 200+)并且验证 $url 无法正常工作也回显 $string。

那么我怎样才能让 $url 正确,或者是否有更好的方法将 html 标签包装到每个新行的第一个单词?

可以使用:

$s = strip_tags($short_description, '<br>');
$rows = explode( "\n", $s );
foreach( $rows as $r ){
echo preg_replace('/^([^ ]*)/', '', $r);
}

然后

if is_readable

是否输出link