webForumDet fria alternativet

Mellanslag i reguljärt uttryck?

PHP

2 svar · 248 visningar · startad av sabbacus

Medlem sedan juli 2002630 inlägg
Frågan#1

Tjipp.
Jag har följande kod:

$text = '
 [
  URL  = "http://www.ncc.co.uk/events/event_details.cfm?code=ea_edin2"
  Title = "NCC Events and Seminars - workshop"
  Snippet = " <b>...</b> <b>structure</b> <b>and</b> <b>the</b> <b>way</b> <b>they</b> <b>work</b>. <b>It</b> <b>provides</b> a &quot;map&quot; of the enterprise<br> and a &quot;route planner&quot; for business and technological change. <b>...</b>  "
  Directory Category = {SE="", FVN=""}
  Directory Title = ""
  Summary = ""
  Cached Size = "48k"
  Related information present = true
  Host Name = ""
  ]
  ';
	echo "<pre>$text</pre>";

	$URLPattern = "/URL  = \"(.*)\"/";
	$matches = array();
	$needles = preg_match ( $URLPattern, $text, $matches );

	
	echo "\nURL<br />\n<pre>";
	print_r($matches);
	echo "</pre>";

Och jag vill ta ut t.ex. URLs värde (som ligger i $text), något som koden i sitt nuvarande form klarar av. Mitt "problem" är att jag, i $URLPattern vill,kunna ange "det kan vara noll, ett eller flera mellanslag här" efter URL och efter dett påföljande likhetstecknet (=).
Jag har testat att skriva $UTLPattern

$URLPattern = "/URL[ *]=[ *] \"(.*)\"/";

Men det verkar som att regexpen inte vill kännas vid mellanslag, för mitt pattern fungerar inte om jag gör såhär.

Så, hur ska jag göra för att ange olika antal mellanslag i mitt reguljära uttryck?

/M

Medlem sedan aug. 20002 975 inlägg
#2

Testa med:

$URLPattern = "/URL\\s+=\\s+\"(.*?)\"/";
Medlem sedan juli 2002630 inlägg
#3

Jag fick inte ditt exempel att fungera, men efter lite nosande på nätet fick jag denna snutt att fungera

$URLPattern = "/URL\ *=\ * \"(.*)\"/";

d.v.s. man lägger ett escapetecken före mellanslaget. Fungerar alldeles utmärkt :)

258 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)