Nån som har ett förslag
Jag har ett skript som läser av en hemsidefil och sparar i en variabel. Det jag nu vill göra är att ta bort alla länkar. Hur ska funktionen se ut?
Kan jag använda mig av:
ereg_replace() eller preg_replace()
Hur funker de?
10 svar · 297 visningar · startad av prey
Jag har ett skript som läser av en hemsidefil och sparar i en variabel. Det jag nu vill göra är att ta bort alla länkar. Hur ska funktionen se ut?
Kan jag använda mig av:
ereg_replace() eller preg_replace()
Hur funker de?
Nån som har ett förslag
Du menar att du vill få en Regular Expression som plockar bort alla länkar?... Finns garanterat färdiga. Prova sök på google
Hittar inte. Tycks inte vara så vanligt att folk läser in filer för att ta bort "<a href=.*.</a>"..
<?
$str = "HEJ<a href=#>länk</a>EN TILL LÄNK<a href=2>LÄNK2</a>BLÄ";
echo "sträng:".$str."<br>";
$nystr = preg_replace("/<a href=.*<\/a>/","",$str);
echo "nystr:".$nystr;
?>
detta ger:
sträng:HEJlänkEN TILL LÄNKLÄNK2BLÄ
nystr:HEJBLÄ
Ni ser nog problemet.
Hur ska jag göra?
Hejsan, kunde inte sova så satte mig här och hittade denna lilla kluriga tråd. Nu har jag visserligen inte gjort något omfattande test på koden, men den klarade iaf. att ta bort både två och tre länkar ur en text.
Vad jag vill minnas är det lite vanskligt att pluppa in en massa slashar och så innanför php taggarna här på forumet och jag har aldrig riktigt lärt mig hur man skall "lura" forumet att visa dem ändå så jag kör med vanliga kod-taggar, håll till godo
<?php
$str = "HEJ<a href=#>länk</a>EN TILL LÄNK<a href=2>LÄNK2</a>BLÄÄ";
echo "sträng:".$str."<br>";
$nystr = preg_replace("/(<a href=.*?>)(.*?)(<\/a>)/s","",$str);
echo "nystr:".$nystr;
?>
Hoppas detta var vad du sökte.
MVH Patrik
Annars så kan du säkerligen hitta något här: http://regexlib.com/DisplayPatterns.aspx?cattabindex=4&categoryId=8 Bra sida om man inte har så stor koll på reg ex... vilket jag inte har
// Nippe
Koden som patrik skrev fungerar utmärkt, dock med begränsningen att det endast får vara en länk per rad, annars suddas allt det som är mellan länkarna på raden också. Lyckligtvis räcker denna funktion för denna gång! Tack för hjälpen!
Nu blev jag lite konfunderad.
För med den koden som jag skrev i tidigare inlägg får jag detta som output:
sträng:HEJlänkEN TILL LÄNKLÄNK2BLÄÄ
nystr:HEJEN TILL LÄNKBLÄÄ
Så på min burk fungerar ju två länkar. *Förstår ingenting*
Nåväl, så länge du är nöjd så är ju allt frid och fröjd iallafall.
MVH Patrik
Skumt, det e väl os:et +servern å så som gör lite olika.
Jag kör Apache 1.3.27 med PHP 4.3.4 på en WinXP Pro burk.
Men det verkar som om min kodlösning är "girigare" när du kör koden än när jag gör det. Försökte hitta i dokumentationen om det inte fanns någon flagga man kunde sätta för att göra den mindre girig, så att den inte matchade från första förekomsten av <a href till sista förekomsten av </a> och tyckte mig (enligt det output jag fick) lyckats, men uppenbarligen inte enligt det output du får... skumt...
Någon annan som kan sprida lite ljus över detta?
MVH Patrik
Själv kör jag apache2, php 4.3.4 på en linux burk