Jump to content

how to reg-ex this 3 different lines of strings?


Go to solution Solved by .josh,

Recommended Posts

I have these three lines of strings ,that appears at the "Front-end"

 Listed via Carousell - http://carousell.co,
 Listed via Carousell - http://thecarousell.com
 Listed via Carousell - http://thecarousell.com/iphone

The scenario is like this, I have a list of items, each of them has a description, and those strings appear in the description randomnly based from some criteria.

the objective is, to hide these strings,

 

but due to some highligting functionality, like, when someone search the string "Carousell" at the search box, the word "Carousell" appears to be bold ,

 

So when I check it in source code through firebug, the strings appears like these

 

    Listed via <em>Carousell</em> - http://carousell.co
    Listed via <em>Carousell</em> - http://thecarousell.com
    Listed via <em>Carousell</em> - http://thecarousell.com/iphone

 

my first solution was to use str_replace() func, so I ended up like this

 

 

           $strfilth = array(
                           'Listed via <em>Carousell</em> - http://carousell.co',
                           'Listed via <em>Carousell</em> - http://thecarousell.com',
                           'Listed via <em>Carousell</em> - http://thecarousell.com/iphone',
                           '<em>Carousell</em> - http://carousell.co',
                           'Listed via <em>Carousell</em> -',
                           'Listed via',
                           '- http://carousell.co',
                           'Carousell',
                           );
 
              $filteredString = str_replace($strfilth,"",$dirtyString);

 

That code above didn't helped at all 

 

So, I thought of using regex for these, but the problem is , how to cater for those two different scenarios ? , can someone help for the reg-ex pattern for those ?

Thanks in advance

 

 

Where are you even getting $dirtyString from? Are you sure it even has your list in it? I ask because you said this is "front end," which is supposed to mean it's happening client-side, like with javascript. If that is the case, then php isn't going to help you here.

Where are you even getting $dirtyString from? Are you sure it even has your list in it? I ask because you said this is "front end," which is supposed to mean it's happening client-side, like with javascript. If that is the case, then php isn't going to help you here.

 

I only used $dirtyString variable when I posted the thread, to represent the item string that contains any of those strings that I mentioned that I should hide.

yes it's happening in front-end , it will print the string...but the thing is, there is <em> tag when the string Carousell was search via the search box

 

I tried to play with regex

 
$str = "Listed via Carousell - http://carousell.co<br/>
    Listed via Carousell - http://thecarousell.com<br/>
    Listed via Carousell - http://thecarousell.com/iphone<br/>
 
    Listed via <em>Carousell</em> - http://carousell.co<br/>
    Listed via <em>Carousell</em> - http://thecarousell.com<br/>
    Listed via <em>Carousell</em> - http://thecarousell.com/iphone<br/>";
 
echo $str;
 
echo "<br/><br/>";
 
$str = preg_replace("/Listed via <.*?>Carousell/","",$str);
 
echo $str;
 

the output went like this

 

 

Listed via Carousell - http://carousell.co
Listed via Carousell - http://thecarousell.com
Listed via Carousell - http://thecarousell.com/iphone
Listed via Carousell - http://carousell.co
Listed via Carousell - http://thecarousell.com
Listed via Carousell - http://thecarousell.com/iphone


Listed via Carousell - http://carousell.co
Listed via Carousell - http://thecarousell.com
Listed via Carousell - http://thecarousell.com/iphone
- http://carousell.co
- http://thecarousell.com
- http://thecarousell.com/iphone

 

you see the first 3 didn't get detected at all.. what more if I want to totally hide all those 6 types of strings

Edited by sasori

Okay, if you want to strip everything except the URLs, try this:

 

$str = preg_replace('~^[^-]+-\s*~m','',$str);

 

can you also add the url? ..actually it's not a hyperlink  when it gets displayed, it's a plain text in front end 

 

Note: that regex you posted will delete all the strings including the other text in the item's description right? ( i just tried it ) ... i only wanted to delete the particular exact strings that I mentioned

 

those 6 types of strings that I mentioned is part of a string , like ., e.g 

The quick brown fox jumps over the lazy dog near the bank of the river Listed via Carousell - http://carousell.co

or 

 
The quick brown fox jumps over the lazy dog near the bank of the river Listed via Carousell - http://thecarousell.com

I only want a regex to remove these 

Listed via Carousell - http://carousell.co,
Listed via Carousell - http://thecarousell.com
Listed via Carousell - http://thecarousell.com/iphone
Listed via <em>Carousell</em> - http://carousell.co
Listed via <em>Carousell</em> - http://thecarousell.com
Listed via <em>Carousell</em> - http://thecarousell.com/iphone

because they are part of a text/string

Edited by sasori

umm, not sure what you mean.. do you mean you want to remove the URL too? But then that just leaves an empty string, yes?

 

yes and no..

 

example: the string appears like this

The quick brown fox jumps over the lazy dog near the bank of the river Listed via Carousell - http://thecarousell.com

I want to remove the

Listed via Carousell - http://thecarousell.com

of that string,, so that  i can display only this

The quick brown fox jumps over the lazy dog near the bank of the river

but as I mentioned from the start of the thread, 

there are six types of them that I want to remove

Listed via Carousell - http://carousell.co,
Listed via Carousell - http://thecarousell.com
Listed via Carousell - http://thecarousell.com/iphone
Listed via <em>Carousell</em> - http://carousell.co
Listed via <em>Carousell</em> - http://thecarousell.com
Listed via <em>Carousell</em> - http://thecarousell.com/iphone

every item description that I was trying to tell may contain any of those strings above, how to filter those 6 types in a single regex ?

 

here's a screen shot of my problem 

 

rcm1d0.jpg

Edited by sasori
  • Solution

oh okay, so this stuff is within a larger string. It helps when you mention the full context of the situation in the first place..

 

$str = preg_replace('~Listed via (<em>)?Carousell(</em>)? - http://(the)?carousell.com?(/iphone)?~i','',$str);

oh okay, so this stuff is within a larger string. It helps when you mention the full context of the situation in the first place..
 

$str = preg_replace('~Listed via (<em>)?Carousell(</em>)? - http://(the)?carousell.com?(/iphone)?~i','',$str);

 

 

 

 

 

...and it looks like from your screenshot it may or may not have a URL, so try this:
 

$str = preg_replace('~Listed via (<em>)?Carousell(</em>)?(\s*-(\s*http://(the)?carousell.com?(/iphone)?)?)?~i','',$str);

 

 

thanks for these , it somehow has helped ease the pain.. now my problem is, some of the item description got wiped out totally

 

qyj0g8.png

Edited by sasori

There's no way that regex would have completely wiped the description. Are you sure you don't have some old code attempts in place? Are you sure some of those even had a description, other than the carousell text? Can you please post a full dump of what the code looks like from those screenshots, BEFORE the regex? IOW can you post what your $str value actually looks like, BEFORE anything is done to it.

There's no way that regex would have completely wiped the description. Are you sure you don't have some old code attempts in place? Are you sure some of those even had a description, other than the carousell text? Can you please post a full dump of what the code looks like from those screenshots, BEFORE the regex? IOW can you post what your $str value actually looks like, BEFORE anything is done to it.

 

ok, I guess it has something to do with that solr function thingy or that highlighting function that adds the <em> thing to the keyword which was inputted to the search box , that produces these item search result listing view

I cannot post the full dump of the code, I am using a framework, and it will take more post to explain each of things that is being called just to display that item listings view...

 

but anyway, those two regex you've posted were awesome.... I'll mark this thread as solved, at some point .thanks alot

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.