webForumDet fria alternativet

Ta bort länkar

PHPur PHP

10 svar · 290 visningar · startad av prey

preys avatarpreyMedlem sedan jan. 2002341 inlägg
Frågan#1

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?
:q

preys avatarpreyMedlem sedan jan. 2002341 inlägg
#2

Nån som har ett förslag

FredrikMHMedlem sedan maj 200430 inlägg
#3

Du menar att du vill få en Regular Expression som plockar bort alla länkar?... Finns garanterat färdiga. Prova sök på google :)

preys avatarpreyMedlem sedan jan. 2002341 inlägg
#4

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?

Patrik81s avatarPatrik81Medlem sedan okt. 2001538 inlägg
#5

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

nkrantzMedlem sedan apr. 2002830 inlägg
#6

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

preys avatarpreyMedlem sedan jan. 2002341 inlägg
#7

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!

Patrik81s avatarPatrik81Medlem sedan okt. 2001538 inlägg
#8

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

preys avatarpreyMedlem sedan jan. 2002341 inlägg
#9

Skumt, det e väl os:et +servern å så som gör lite olika.

Patrik81s avatarPatrik81Medlem sedan okt. 2001538 inlägg
#10

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

preys avatarpreyMedlem sedan jan. 2002341 inlägg
#11

Själv kör jag apache2, php 4.3.4 på en linux burk

139 ms totalt · 3 externa anrop · v20260731065814-full.58439ac5
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)