2010-06-24 46 views
3

标记短语我使用PHP,我期待创建我的文本内该网站的其他内容的链接,以便例如:在段落

I fell into the media industry aged 30, when David Mansfield, now on the board of 
Ingenious Media, gave me my first break at Thames TV. From there, I worked at the 
(now-defunct) Sunday Correspondent and IPC, before joining TDI, which became Viacom 
and then CBS Outdoor. After 12 years in outdoor, I spent a year out doing overseas 
outdoor consultancy work in Russia, Dubai and Spain, as well as launching the media 
CRM business, Media By Permission. I have been lucky enough to work across a range of 
media, but outdoor would definitely be my specialist subject on 'Mastermind'. 

我希望所有有关Ingenious Media链接Ingenious Media要将页面但我也想将所有提到的Media链接到媒体相关页面。

很显然,我不想这个词Media内部链接Ingenious Media

我怎么能去这样做没有双联有些话?

在此先感谢

回答

1

第1步。创建一个新的数组,其中包含要“标记”的实体的名称,并将其最长的实体名称命名为最短的实体名称。

第2步。循环访问该阵列,并使用唯一标记替换文本中实体的每个出现位置(例如## . rand(100, 999) * rand(100, 999))。我们这样做是为了避免在构成另一实体一部分的实体周围创建链接。

第3步。创建链接并将其存储在另一个数组中,其中数组中每个条目的键都是唯一标记,并且该值是您刚创建的链接。

第4步。循环访问links数组,并将文本中的标记替换为数组中标记对应的链接。

0

我不知道这是可能的正则表达式。我会做这样的事情:

  1. 搜索词组
  2. 检查,如果这句话是内部链接(如果begining标签比你很可能不是里面,如果它是eding标签搜索到正确的标签你在里面)
  3. 如果你没有更换里面
0
$string = '...your string from above....'; 

// Here we replace only "Media" when there is no "Ingenious " in front of it. 
$string = preg_replace('#(?<!Ingenious)Media#', '<a href="media.html">Media</a>', $string); 

// Here don't need to use a regex... 
$string = str_replace('Ingenious Media', '<a href="ingenious_media.html">Ingenious Media</a>', $string); 
echo $string; 

我敢肯定,有一个更好的正则表达式“,导致总是有),但这样一来它的工作原理,只是测试它:)